// pages/user/user.js

//获取app实例
const app = getApp();
const CONFIG = require('../../config/config.js');
const OVAPI = require('../../config/api.js');

Page({
    navigateToLogin: false,//定义变量，是否跳到登录页
    /**
     * 页面的初始数据
     */
    data: {
        userInfo: {},   // 用户信息
        accessToken: !!wx.getStorageSync('accessToken')     // 是否登录，根据后台返回的skey判断
    },

    /**
     * 生命周期函数--监听页面加载, 触发时机早于onShow和onReady
     */
    onLoad: function (options) {
        // this.checkLoginStatus();
        const _this = this;
        const accessToken = wx.getStorageSync('accessToken');
        if (!accessToken) {
            _this.goLoginPageTimeOut();
            return;
        }
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示，触发事件早于onReady
     */
    onShow: function () {
        let that = this;
        let userInfo = wx.getStorageSync('userInfo');
        if (!userInfo) {
            // that.goLoginPageTimeOut();
        } else {
            that.setData({
                userInfo: userInfo,
                version: CONFIG.version
            })
        }
        this.getOvaryUserInfo();
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    },

    goLoginPageTimeOut: function() {
        if (this.navigateToLogin){
            return;
        }
        wx.removeStorageSync('token');
        this.navigateToLogin = true;

        // setTimeout(function callback, number delay, any rest)
        // 一个定时器, 在定时到期以后执行注册的回调函数
        // number delay 单位 ms
        setTimeout(function() {
            wx.navigateTo({
                url: "/pages/authorize/authorize"
            })
        }, 1000);
    },
    getOvaryUserInfo: function () {
        var that = this;
        var accessToken = wx.getStorageSync('accessToken');
        OVAPI.userDetail(accessToken).then(function (res) {
            console.log("userDetail>>> " + JSON.stringify(res));
            if (res.status === 500 && res.message === "token不正确或者已过期!"){
                console.log("token不正确或者已过期!");
                that.login();
            }
            if (res.statusCode === 200) {
                let _data = {};
                _data.OvaryUserInfoMap = res.data;
                // if (res.data.base.mobile) {
                //     _data.userMobile = res.data.base.mobile;
                // }
                that.setData(_data);
            }
        })
    },
    login: function() {
        const that = this;
        const accessToken = wx.getStorageSync('accessToken');
        if (accessToken) {
            OVAPI.userDetail(accessToken).then(function(res) {
                if (res.statusCode !== 200) {
                    wx.removeStorageSync('accessToken');
                    that.login();
                } else {
                    // 回到原来的地方放
                    app.navigateToLogin = false;
                    wx.navigateBack();
                }
            });
            return;
        }
        wx.login({
            success: function(res) {
                //{"errMsg":"login:ok","code":"071BD1rQ1OvvL11XE7rQ1Q2IqQ1BD1rW"}
                console.error("wx.login>>>" + JSON.stringify(res));
                OVAPI.loginByWeiXin(res.code).then(function (response) {
                    if (response.statusCode === 200) {
                        let _data = {};
                        _data.OvaryUserInfoMap = response.data;
                        // if (res.data.base.mobile) {
                        //     _data.userMobile = res.data.base.mobile;
                        // }
                        that.setData(_data);
                        wx.setStorageSync('accessToken', response.data.accessToken);
                        // 回到原来的地方放
                        app.navigateToLogin = false;
                        wx.navigateBack();
                    }
                });
            }
        })
    }
})